home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / PInterfaces / FixMath.p < prev    next >
Text File  |  1996-05-01  |  4KB  |  159 lines

  1. {
  2.      File:        FixMath.p
  3.  
  4.      Contains:    Fixed Math Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT FixMath;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __FIXMATH__}
  28. {$SETC __FIXMATH__ := 1}
  29.  
  30. {$I+}
  31. {$SETC FixMathIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37.  
  38. {$PUSH}
  39. {$ALIGN MAC68K}
  40. {$LibExport+}
  41.  
  42.  
  43. CONST
  44.     fixed1                        = $00010000;
  45.     fract1                        = $40000000;
  46.     positiveInfinity            = $7FFFFFFF;
  47.     negativeInfinity            = $80000000;
  48.  
  49. {
  50.     Previously in ToolUtils.i.  Moved here because it makes more sense.
  51. }
  52. {$IFC NOT OLDROUTINELOCATIONS }
  53. {$IFC FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE }
  54. FUNCTION FixRatio(numer: INTEGER; denom: INTEGER): Fixed;
  55.     {$IFC NOT GENERATINGCFM}
  56.     INLINE $A869;
  57.     {$ENDC}
  58. FUNCTION FixMul(a: Fixed; b: Fixed): Fixed;
  59.     {$IFC NOT GENERATINGCFM}
  60.     INLINE $A868;
  61.     {$ENDC}
  62. FUNCTION FixRound(x: Fixed): INTEGER;
  63.     {$IFC NOT GENERATINGCFM}
  64.     INLINE $A86C;
  65.     {$ENDC}
  66. {$ENDC}
  67. {$ENDC}
  68. FUNCTION Fix2Frac(x: Fixed): Fract;
  69.     {$IFC NOT GENERATINGCFM}
  70.     INLINE $A841;
  71.     {$ENDC}
  72. FUNCTION Fix2Long(x: Fixed): LONGINT;
  73.     {$IFC NOT GENERATINGCFM}
  74.     INLINE $A840;
  75.     {$ENDC}
  76. FUNCTION Long2Fix(x: LONGINT): Fixed;
  77.     {$IFC NOT GENERATINGCFM}
  78.     INLINE $A83F;
  79.     {$ENDC}
  80. FUNCTION Frac2Fix(x: Fract): Fixed;
  81.     {$IFC NOT GENERATINGCFM}
  82.     INLINE $A842;
  83.     {$ENDC}
  84. FUNCTION FracMul(x: Fract; y: Fract): Fract;
  85.     {$IFC NOT GENERATINGCFM}
  86.     INLINE $A84A;
  87.     {$ENDC}
  88. FUNCTION FixDiv(x: Fixed; y: Fixed): Fixed;
  89.     {$IFC NOT GENERATINGCFM}
  90.     INLINE $A84D;
  91.     {$ENDC}
  92. FUNCTION FracDiv(x: Fract; y: Fract): Fract;
  93.     {$IFC NOT GENERATINGCFM}
  94.     INLINE $A84B;
  95.     {$ENDC}
  96. FUNCTION FracSqrt(x: Fract): Fract;
  97.     {$IFC NOT GENERATINGCFM}
  98.     INLINE $A849;
  99.     {$ENDC}
  100. FUNCTION FracSin(x: Fixed): Fract;
  101.     {$IFC NOT GENERATINGCFM}
  102.     INLINE $A848;
  103.     {$ENDC}
  104. FUNCTION FracCos(x: Fixed): Fract;
  105.     {$IFC NOT GENERATINGCFM}
  106.     INLINE $A847;
  107.     {$ENDC}
  108. FUNCTION FixATan2(x: LONGINT; y: LONGINT): Fixed;
  109.     {$IFC NOT GENERATINGCFM}
  110.     INLINE $A818;
  111.     {$ENDC}
  112. {$IFC GENERATINGPOWERPC }
  113. FUNCTION WideCompare({CONST}VAR target: wide; {CONST}VAR source: wide): INTEGER; C;
  114. FUNCTION WideAdd(VAR target: wide; {CONST}VAR source: wide): WidePtr; C;
  115. FUNCTION WideSubtract(VAR target: wide; {CONST}VAR source: wide): WidePtr; C;
  116. FUNCTION WideNegate(VAR target: wide): WidePtr; C;
  117. FUNCTION WideShift(VAR target: wide; shift: LONGINT): WidePtr; C;
  118. FUNCTION WideSquareRoot({CONST}VAR source: wide): LONGINT; C;
  119. FUNCTION WideMultiply(multiplicand: LONGINT; multiplier: LONGINT; VAR target: wide): WidePtr; C;
  120. {  returns the quotient  }
  121. FUNCTION WideDivide({CONST}VAR dividend: wide; divisor: LONGINT; VAR remainder: LONGINT): LONGINT; C;
  122. {  quotient replaces dividend  }
  123. FUNCTION WideWideDivide(VAR dividend: wide; divisor: LONGINT; VAR remainder: LONGINT): WidePtr; C;
  124. FUNCTION WideBitShift(VAR src: wide; shift: LONGINT): WidePtr; C;
  125. {$ENDC}
  126. {$IFC GENERATING68K AND NOT GENERATING68881 }
  127. FUNCTION Frac2X(x: Fract): double_t;
  128.     {$IFC NOT GENERATINGCFM}
  129.     INLINE $A845;
  130.     {$ENDC}
  131. FUNCTION Fix2X(x: Fixed): double_t;
  132.     {$IFC NOT GENERATINGCFM}
  133.     INLINE $A843;
  134.     {$ENDC}
  135. FUNCTION X2Fix(x: double_t): Fixed;
  136.     {$IFC NOT GENERATINGCFM}
  137.     INLINE $A844;
  138.     {$ENDC}
  139. FUNCTION X2Frac(x: double_t): Fract;
  140.     {$IFC NOT GENERATINGCFM}
  141.     INLINE $A846;
  142.     {$ENDC}
  143. {$ELSEC}
  144. FUNCTION Frac2X(x: Fract): double_t;
  145. FUNCTION Fix2X(x: Fixed): double_t;
  146. FUNCTION X2Fix(x: double_t): Fixed;
  147. FUNCTION X2Frac(x: double_t): Fract;
  148. {$ENDC}
  149. {$ALIGN RESET}
  150. {$POP}
  151.  
  152. {$SETC UsingIncludes := FixMathIncludes}
  153.  
  154. {$ENDC} {__FIXMATH__}
  155.  
  156. {$IFC NOT UsingIncludes}
  157.  END.
  158. {$ENDC}
  159.